// 静态文件服务器
// 题目：
// 使用Node.js的http模块和fs模块，创建一个简单的静态文件服务器。当用户访问服务器时，根据请求的路径返回对应的静态文件（如HTML、CSS、JavaScript文件）。如果请求的文件不存在，则返回404状态码和“文件未找到”的提示信息。
// 要求：
// 服务器监听在本地的8080端口。
// 将静态文件放在一个名为public的目录中。
// 如果请求的文件是HTML文件，返回Content-Type为text/html；如果是CSS文件，返回Content-Type为text/css；如果是JavaScript文件，返回Content-Type为application/javascript。
// 如果请求的文件不存在，返回404状态码和“文件未找到”的提示信息。
import http from "http"; //引入http
import fs from "fs"; //引入fs
import path from "path"; //引入path

/*
let app = http.createServer((req, resp) => {
  if (fs.existsSync(`./public${req.url}`)) {
    if (path.extname(req.url) == ".html") {
      resp.end("text/html");
    } else if (path.extname(req.url) == ".css") {
      resp.end("text/css");
    } else if (path.extname(req.url) == ".js") {
      resp.end("application/javascript");
    }
  } else {
    resp.writeHead(404, "Not Found");
    resp.end("404 Not Found");
  }
});
app.listen(8080);
*/

/*
日志记录服务器
题目：
使用Node.js的http模块和fs模块，创建一个HTTP服务器，记录每次请求的详细信息到日志文件中。日志文件应包含请求的时间戳、请求方法、请求路径和客户端IP地址。
要求：
服务器监听在本地的5000端口。
每次请求时，将请求信息追加到一个名为server.log的日志文件中。
日志文件的格式为：[时间戳] - [请求方法] - [请求路径] - [客户端IP]。
提供一个简单的HTML页面作为响应，内容为“日志已记录”。
*/
//创建http服务
const server = http.createServer(fn);
function fn(req, res) {
  let time = Date.now();
  let reqMethod = req.method;
  let reqUrl = `http://localhost:5000${req.url}`;
  let reqIP = req.socket.remoteAddress;
  //拼接日志文件的格式
  let logContent = `${time} - ${reqMethod} - ${reqUrl} - ${reqIP}`;
  fs.appendFile("./server.log", `\n${logContent}`, (err) => {
    if (err) {
      console.log(err);
    } else {
      res.writeHead(200, { "Content-Type": "text/html;charset=utf8" });
      res.end("日志已记录");
    }
  });
}
server.listen(5000); //监听端口

// 图片查看器
// 题目：
// 使用Node.js的http模块和fs模块，创建一个图片查看器服务器。用户可以通过访问/view?filename=图片名来查看指定的图片文件。
// 要求：
// 服务器监听在本地的4000端口。
// 将图片文件放在一个名为images的目录中。
// 如果请求的图片存在，返回图片内容，并设置Content-Type为image/jpeg或image/png（根据文件扩展名判断）。
// 如果请求的图片不存在，返回404状态码和“图片未找到”的提示信息。

// 文件搜索服务
// 题目：
// 使用Node.js的http模块和fs模块，创建一个文件搜索服务。用户可以通过访问/search?query=关键词来搜索指定目录下的文件名是否包含关键词的文件。
// 要求：
// 服务器监听在本地的8000端口。
// 搜索的目录为当前目录下的files文件夹。
// 返回一个JSON格式的响应，包含所有匹配的文件名。如果未找到匹配的文件，返回一个空数组。
// 示例响应：
// {
//     "files": ["example1.txt", "example2.txt"]
// }

// 简单Web服务 要求：
// 在浏览器输入http://localhost:8080/时，会返回404，原因是程序识别出HTTP请求的不是文件，而是目录。请修改file_server.js，如果遇到请求的路径是目录，则自动在目录下依次搜索index.html、d
